/**
 *项目：xmlInterf
 *通联支付网络有限公司
 * 作者：张广海
 * 日期：Jan 2, 2013
 * 功能说明：系统对接demo
 */
package com.wx.activitys.xmlInterf.allinpay.xmltrans.demo;

import org.bouncycastle.jce.provider.BouncyCastleProvider;

import com.wx.activitys.xmlInterf.aipg.rtreq.Trans;
import com.wx.activitys.xmlInterf.aipg.singleacctvalid.ValidR;
import com.wx.activitys.xmlInterf.allinpay.XmlTools;
import com.wx.activitys.xmlInterf.allinpay.xmltrans.service.TranxServiceImpl;

/**
 * 特别申明，该demo仅供学习参考，未经过严格测试，不作为通联发布版本，其中有可能存在bug，
 * 请严格参照对接文档的格式要求，以及返回码说明进行系统 对接
 */
public class TranxMain {

	/**
	 * 外网ip；113.108.182.3 
	 * 端口：8083（http）
	 * 端口：443（https）
	 * @param args
	 * @throws Exception 
	 */
		String testTranURL1 = "http://172.16.1.11/aipg/query";//通联测试环境，内网（与查询有关的使用）
		String testTranURL="https://113.108.182.3/aipg/ProcessServlet"; //通联测试环境，外网（商户测试使用）
		String testTranURL11="https://172.16.1.11/aipg/ProcessServlet"; //通联测试环境，内网（通联内部技术使用）
		String tranURL="http://tlt.allinpay.com/aipg/ProcessServlet";//通联生产环境（商户上线时使用）
		String testURLOfBill="https://113.108.182.3/aipg/GetConFile.do?SETTDAY=@xxx&REQTIME=@yyy&MERID=@zzz&SIGN=@sss&CONTFEE=1"; //
		String URLOfBill="https://tlt.allinpay.com/aipg/GetConFile.do?SETTDAY=@xxx&REQTIME=@yyy&MERID=@zzz&SIGN=@sss&CONTFEE=1"; //
		String testURLOfBill1="https://172.16.1.11/aipg/GetConFile.do?SETTDAY=@xxx&REQTIME=@yyy&MERID=@zzz&SIGN=@sss&CONTFEE=1";
		boolean isfront=false;//是否发送至前置机（由前置机进行签名）如不特别说明，商户技术不要设置为true
		String reqsn="1404826943281";//交易流水号(交易结果查询时，待查询的原支付交易流水号)
		String trx_code,busicode;//100001批量代收 100002批量代付 100011单笔实时代收 100014单笔实时代付
		TranxServiceImpl tranxService=new TranxServiceImpl();
		String testURLftp="https://172.16.1.11/aipg/UploadUserFile";
		public String idVerify(ValidR valr){
			/**
			 * 测试的时候不用修改以下业务代码，但上生产环境的时候，必须使用业务人员提供的业务代码，否则返回“未开通业务类型”
			 * 另外，特别说明：如果生产环境对接的时候返回”未开通产品“那么说明该商户开通的接口与目前测试的接口不一样，需要找业务确认
			 * 代收是批量代收接口的简称，代付 是批量代付接口的简称，
			 * 对接报文中，info下面的用户名一般是：商户号+04，比如商户号为：200604000000445，那么对接用户一般为：20060400000044504
			 */
			// trx_code="100001";
			// trx_code="REFUND";
			trx_code = "100011";
			// trx_code="REFUND";
			if ("100011".equals(trx_code) || "100001".equals(trx_code))// 收款的时候，填写收款的业务代码
				busicode = "19900";
			else
				busicode = "09900";
			// 设置安全提供者,注意，这一步尤为重要
			BouncyCastleProvider provider = new BouncyCastleProvider();
			XmlTools.initProvider(provider);
		// 国民身份验证查询
			 try {
				return tranxService.idVerifyQ(tranURL,isfront,valr);
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			 return "";
			 
		}
		public String idVerifyDaifu(Trans Trans){
			// trx_code="100001";
			// trx_code="REFUND";
			trx_code = "100014";
			// trx_code="REFUND";
			if ("100011".equals(trx_code) || "100001".equals(trx_code))// 收款的时候，填写收款的业务代码
				busicode = "19900";
			else
				busicode = "09900";
			// 设置安全提供者,注意，这一步尤为重要
			BouncyCastleProvider provider = new BouncyCastleProvider();
			XmlTools.initProvider(provider);
		   // 国民身份验证查询
			 try {
				return tranxService.singleTranx(tranURL,trx_code,busicode,isfront,Trans);
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			 return "";
		}
		
		/*public static void main(String[] args) throws Exception {
			*//**
			 * 外网ip；113.108.182.3 
			 * 端口：8083（http）
			 * 端口：443（https）
			 * @param args
			 * @throws Exception 
			 *//*
				String testTranURL1 = "http://172.16.1.11/aipg/query";//通联测试环境，内网（与查询有关的使用）
				String testTranURL="https://113.108.182.3/aipg/ProcessServlet"; //通联测试环境，外网（商户测试使用）
				String testTranURL11="https://172.16.1.11/aipg/ProcessServlet"; //通联测试环境，内网（通联内部技术使用）
				String tranURL="http://tlt.allinpay.com/aipg/ProcessServlet";//通联生产环境（商户上线时使用）
				String testURLOfBill="https://113.108.182.3/aipg/GetConFile.do?SETTDAY=@xxx&REQTIME=@yyy&MERID=@zzz&SIGN=@sss&CONTFEE=1"; //
				String URLOfBill="https://tlt.allinpay.com/aipg/GetConFile.do?SETTDAY=@xxx&REQTIME=@yyy&MERID=@zzz&SIGN=@sss&CONTFEE=1"; //
				String testURLOfBill1="https://172.16.1.11/aipg/GetConFile.do?SETTDAY=@xxx&REQTIME=@yyy&MERID=@zzz&SIGN=@sss&CONTFEE=1";
				boolean isfront=false;//是否发送至前置机（由前置机进行签名）如不特别说明，商户技术不要设置为true
				String reqsn="1404826943281";//交易流水号(交易结果查询时，待查询的原支付交易流水号)
				String trx_code,busicode;//100001批量代收 100002批量代付 100011单笔实时代收 100014单笔实时代付
				TranxServiceImpl tranxService=new TranxServiceImpl();
				String testURLftp="https://172.16.1.11/aipg/UploadUserFile";
				trx_code = "100014";
				// trx_code="REFUND";
				if ("100011".equals(trx_code) || "100001".equals(trx_code))// 收款的时候，填写收款的业务代码
					busicode = "19900";
				else
					busicode = "09100";
				// 设置安全提供者,注意，这一步尤为重要
				BouncyCastleProvider provider = new BouncyCastleProvider();
				XmlTools.initProvider(provider);
			    tranxService.singleTranx(tranURL,trx_code,busicode,isfront);
		}*/
		
		public static void main(String[] args) {
			String testTranURL1 = "http://172.16.1.11/aipg/query";//通联测试环境，内网（与查询有关的使用）
			String testTranURL="https://113.108.182.3/aipg/ProcessServlet"; //通联测试环境，外网（商户测试使用）
			String testTranURL11="https://172.16.1.11/aipg/ProcessServlet"; //通联测试环境，内网（通联内部技术使用）
			String tranURL="http://tlt.allinpay.com/aipg/ProcessServlet";//通联生产环境（商户上线时使用）
			String testURLOfBill="https://113.108.182.3/aipg/GetConFile.do?SETTDAY=@xxx&REQTIME=@yyy&MERID=@zzz&SIGN=@sss&CONTFEE=1"; //
			String URLOfBill="https://tlt.allinpay.com/aipg/GetConFile.do?SETTDAY=@xxx&REQTIME=@yyy&MERID=@zzz&SIGN=@sss&CONTFEE=1"; //
			String testURLOfBill1="https://172.16.1.11/aipg/GetConFile.do?SETTDAY=@xxx&REQTIME=@yyy&MERID=@zzz&SIGN=@sss&CONTFEE=1";
			boolean isfront=false;//是否发送至前置机（由前置机进行签名）如不特别说明，商户技术不要设置为true
			String reqsn="1404826943281";//交易流水号(交易结果查询时，待查询的原支付交易流水号)
			String trx_code,busicode;//100001批量代收 100002批量代付 100011单笔实时代收 100014单笔实时代付
			TranxServiceImpl tranxService=new TranxServiceImpl();
			String testURLftp="https://172.16.1.11/aipg/UploadUserFile";
			trx_code = "100014";
			if ("100011".equals(trx_code) || "100001".equals(trx_code))// 收款的时候，填写收款的业务代码
				busicode = "19900";
			else
				busicode = "09900";
			// 设置安全提供者,注意，这一步尤为重要
			BouncyCastleProvider provider = new BouncyCastleProvider();
			XmlTools.initProvider(provider);
			
			/*ValidR valr= new ValidR();
			valr.setBANK_CODE("0102");
			valr.setACCOUNT_NO("6222023500026024717");
			valr.setID("230102199306031611");
			valr.setTEL("13695561287");
			valr.setACCOUNT_NAME("赵海涛");*/
			
			Trans trans = new Trans();
			trans.setACCOUNT_NAME("王子翔");
		    trans.setACCOUNT_NO("6217001630005931123");
		    trans.setACCOUNT_TYPE("00");
			trans.setAMOUNT("1");
			//trans.setBANK_CODE("0105");
			
		 // 国民身份验证查询
		 try {
			 /*tranxService.idVerifyQ(tranURL,isfront,valr);*/
			 tranxService.singleTranx(tranURL,trx_code,busicode,isfront,trans);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		};			
		}
		
	
}
